package br.com.sgpv2.service.contrato;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.pessoa.Contrato;
import br.com.sgpv2.entity.pessoa.Pessoa;
import br.com.sgpv2.hibernate.contrato.ContratoRepository;

/**
 * Classe de serviço de Dependente.
 */
@Service(value = "contratoService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ContratoServiceImpl implements ContratoService {

	ContratoRepository contratoRepository;

	/**
	 * Configura o DAO de contrato.
	 */
	@Autowired
	public void setContratoRepository(
			ContratoRepository contratoRepository) {
		this.contratoRepository = contratoRepository;
	}

	/** {@inheritDoc} */
	@Override
	public void alterar(Contrato contrato) {
		contratoRepository.alterar(contrato);
	}

	/** {@inheritDoc} */
	@Override
	public void saveOrUpdate(Contrato contrato) {
		contratoRepository.saveOrUpdate(contrato);
	}

	/** {@inheritDoc} */
	@Override
	public Contrato buscar(Integer pk) throws NegocioExeception {
		return contratoRepository.buscar(pk);
	}

	/** {@inheritDoc} */
	@Override
	public List<Contrato> listar() throws Exception {
		return contratoRepository.listar();
	}

	/** {@inheritDoc} */
	@Override
	public void remover(Contrato contrato) throws Exception {
		contratoRepository.excluir(contrato);
	}

	/** {@inheritDoc} */
	@Override
	public Contrato salvar(Contrato contrato) throws Exception {
		contratoRepository.salvar(contrato);
		return contrato;
	}

	/** {@inheritDoc} */
	public List<Contrato> consultarPorTitular(Pessoa pessoa)
			throws NegocioExeception {
		return contratoRepository.consultarPorTitular(pessoa);
	}
	
	/** {@inheritDoc} */
	public Contrato buscarPorMatricula(String matriculaContrato) {
		return contratoRepository.buscarPorMatricula(matriculaContrato);
	}

}
